package dao;

import java.util.ArrayList;
import java.util.List;

import hbt.HbtUtil;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import bean.RodamientoVO;

public class HbtRodamientoDao {

	private static SessionFactory sf = null;
	private static HbtRodamientoDao instancia = null;

	public static HbtRodamientoDao getInstancia() {
		if (instancia == null) {
			sf = HbtUtil.getSessionFactory();
			instancia = new HbtRodamientoDao();
		}
		return instancia;
	}
	
	/**
	 * Guarda el rodamiento si no existe
	 * @param rodamiento
	 */

	public void guardarRodamiento(RodamientoVO rodamiento) { 
		if (!existeRodamiento(rodamiento)) {
			Session session = sf.openSession();
			session.beginTransaction();
			session.persist(rodamiento);
			session.flush();
			session.getTransaction().commit();
			session.close();
		}
	}

	public RodamientoVO obtenerRodamiento(RodamientoVO rodamiento) {
		Session session = sf.openSession();
		Transaction trans = session.beginTransaction();
		RodamientoVO rod = (RodamientoVO) session.get(RodamientoVO.class,
				rodamiento.getIdRodamiento());
		trans.commit();
		session.close();
		return rod;
	}

	public boolean existeRodamiento(RodamientoVO r) {
		if (obtenerRodamiento(r) == null)
			return false;
		else
			return true;

	}

	@SuppressWarnings("unchecked")
	public List<RodamientoVO> obtenerTodos() {
		List<RodamientoVO> rodamientos = new ArrayList<RodamientoVO>();
		Session session = null;
		session = sf.openSession();
		session.beginTransaction();
		rodamientos = session.createQuery("from RodamientoVO").list();
		session.getTransaction().commit();
		session.close();
		return rodamientos;

	}

	public void actualizarRodamiento(RodamientoVO rodamientoVO) {
		try {

			Session session = sf.openSession();
			session.beginTransaction();
			session.update(rodamientoVO);
			session.getTransaction().commit();
			session.close();

		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}

}
